# _*_ encoding:utf-8 _*_

import os
import sys

# 配置common为项目导包路径
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
common_dir = os.path.join(base_dir, 'common')

sys.path.insert(0, common_dir)

from flask import Flask

from utils.constants import EXTRA_ENV_COINFIG
from app.settings.config import config_dict


def _create_app(config_name):
    """
    内部工程方法：创建app对象
    :param config_name: 配置类的名称 [dev pro test]
    :return: app
    """

    # 创建app对象
    app = Flask(__name__)

    # 获取配置类
    config_class = config_dict[config_name]

    # 从配置类中读取配置信息
    app.config.from_object(config_class)

    # 从环境变量中读取配置信息
    # export ENV_CONFIG 配置文件路径
    # silent = True 即使没有配置页不会报错
    app.config.from_envvar(EXTRA_ENV_COINFIG, silent=True)

    # 返回app对象
    return app


def creat_app(config_name):
    """
    给外界调用的工厂方法生产app对象
    :param config_name:
    :return: app
    """

    # 调用内部工厂方法创建app对象
    app = _create_app(config_name)

    return app


















